/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.view;

import br.jm.financeiro.base.eao.EaoException;
import br.jm.financeiro.datamodel.LazyFornecedor;
import br.jm.financeiro.entity.Categoria;
import br.jm.financeiro.entity.CepBairro;
import br.jm.financeiro.entity.CepCidade;
import br.jm.financeiro.entity.CepEndereco;
import br.jm.financeiro.entity.CepUf;
import br.jm.financeiro.entity.Fornecedor;
import br.jm.financeiro.entity.FornecedorEndereco;
import br.jm.financeiro.entity.FornecedorEnderecoTelefone;
import br.jm.financeiro.entity.FornecedorTelefoneContato;
import br.jm.financeiro.entity.CodigoDdd;
import br.jm.financeiro.entity.CodigoDdi;
import br.jm.financeiro.entity.Departamento;
import br.jm.financeiro.filter.Funcoes;
import br.jm.financeiro.sistema.eao.FornecedorEao;
import br.jm.financeiro.sistema.eao.CodigoDddEao;
import br.jm.financeiro.sistema.eao.CodigoDdiEao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
import org.primefaces.context.RequestContext;
import org.primefaces.model.LazyDataModel;

/**
 *
 * @author joao
 */
public class FornecedorBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private Fornecedor selectedFornecedor;
    private FornecedorEao FornecedorJpa;
    private LazyDataModel<Fornecedor> lazyModel;
    private FornecedorEndereco selectedFornecedorEndereco;
    private LazyDataModel<FornecedorEndereco> lazyModelEndereco;
    private String mascaraCpf;
    private SelectItem[] tipFornecedorOptions;
    private String[][] tipFornecedor = {{"F", "J"}, {"Física", "Jurídica"}};
    private SelectItem[] tipEnderecoOptions;
    private String[][] tipEndereco = {{"1", "2", "3", "4", "5"}, {"Comercial", "Residencial", "Filial", "Cobrança", "Outro"}};
    private SelectItem[] tipEnderecoTelefoneOptions;
    private String[][] tipEnderecoTelefone = {{"1", "2", "3", "4"}, {"Comercial", "Residencial", "Celular", "Outro"}};
    private FacesMessage msg;
    private Funcoes funcoes = new Funcoes();
    private FornecedorEnderecoTelefone selectedFornecedorEnderecoTelefone;
    private LazyDataModel<FornecedorEnderecoTelefone> lazyModelEnderecoTelefone;
    private CodigoDdi ddi;
    private CodigoDdd ddd;
    private Departamento departamento;
    private CepEndereco cepEndereco;
    private CepEndereco cepEnderecoTemp;
    private Categoria categoria;
    private boolean incluirfornecedor;
    private boolean alterarfornecedor;
    private boolean incluirendereco;
    private boolean alterarendereco;
    private Integer rowid;
    private Integer rowidtelefone;
    private Integer rowidtelefonecontato;
    private FornecedorTelefoneContato selectedFornecedorTelefoneContato;
    private List<FornecedorTelefoneContato> FornecedorTelefoneContatoList;
    private boolean ativacontato = true;
    private boolean ativatelefone = true;
    private Integer ativaTab = 0;
    private Integer ativaAccordion = 0;
    private String processo;
    private String processoEndereco = "";
    private String processoTelefone = "";
    private String processoContato = "";
    private CodigoDdiEao codigoDdiJpa;
    private CodigoDddEao codigoDddJpa;
    boolean lReturn = false;

    public FornecedorBean() {
        try {
            FornecedorJpa = FornecedorEao.getInstance();
            codigoDdiJpa = CodigoDdiEao.getInstance();
            codigoDddJpa = CodigoDddEao.getInstance();

            CepUf cepUf = new CepUf();
            CepCidade cepCidade = new CepCidade();
            cepCidade.setCodUf(cepUf);
            CepBairro cepBairro = new CepBairro();
            cepBairro.setCodCidade(cepCidade);
            cepEnderecoTemp = new CepEndereco();
            cepEnderecoTemp.setCodBairro(cepBairro);

            ddd = new CodigoDdd();
            ddi = new CodigoDdi();
            departamento = new Departamento();
            selectedFornecedor = new Fornecedor();
            selectedFornecedor.setIdCategoria(new Categoria());
            selectedFornecedorEndereco = new FornecedorEndereco();
            selectedFornecedorEndereco.setCodLogradouro(cepEnderecoTemp);
            selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
            selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
            selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
            selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            FornecedorTelefoneContatoList = new ArrayList<>();

            selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
            selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());

            tipFornecedorOptions = createFilterOptions(tipFornecedor);
            tipEnderecoOptions = createFilterOptionsEndereco(tipEndereco);
            tipEnderecoTelefoneOptions = createFilterOptionsEnderecoTelefone(tipEnderecoTelefone);

            //FORNECEDOR
            lazyModel = new LazyFornecedor(FornecedorJpa);

        } catch (Exception ex) {
            //Logger.getLogger(FornecedorBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public LazyDataModel<Fornecedor> getLazyModel() {
        return lazyModel;
    }

    public void setLazyModel(LazyDataModel<Fornecedor> lazyModel) {
        this.lazyModel = lazyModel;
    }

    public Fornecedor getSelectedFornecedor() {
        /*
         if (selectedFornecedor == null) {
         selectedFornecedor = new Fornecedor();
         selectedFornecedor.setIdCategoria(new Categoria());
         } else if (selectedFornecedor.getIdFornecedor() == null) {
         incluirfornecedor = true;
         alterarfornecedor = false;
         } else {
         incluirfornecedor = false;
         alterarfornecedor = true;
         }
         */
        return selectedFornecedor;
    }

    public void setSelectedFornecedor(Fornecedor selectedFornecedor) {
        this.ativaTab = 0;
        this.ativaAccordion = 0;
        this.processo = "ALTERAÇÃO";

        if (selectedFornecedor.getFornecedorEnderecoTelefoneList().isEmpty()) {
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            FornecedorTelefoneContatoList = new ArrayList<>();
            selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
            selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
            selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
            selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
            selectedFornecedorEnderecoTelefone.setFornecedorTelefoneContatoList(FornecedorTelefoneContatoList);
            selectedFornecedor.getFornecedorEnderecoTelefoneList().add(selectedFornecedorEnderecoTelefone);
        } else {
            FornecedorTelefoneContatoList = new ArrayList<>();

            for (int i = 0; i < selectedFornecedor.getFornecedorEnderecoTelefoneList().size(); i++) {
                selectedFornecedorEnderecoTelefone = selectedFornecedor.getFornecedorEnderecoTelefoneList().get(i);
                FornecedorTelefoneContatoList = selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList();
            }
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
            selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
            selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
            selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
        }
        selectedFornecedorEndereco = new FornecedorEndereco();
        selectedFornecedorEndereco.setCodLogradouro(cepEnderecoTemp);
        if (selectedFornecedor.getFornecedorEnderecoList().isEmpty()) {
            selectedFornecedor.getFornecedorEnderecoList().add(selectedFornecedorEndereco);
        }
        this.selectedFornecedor = selectedFornecedor;
    }

    public void inserir(ActionEvent actionEvent) {
        msg = null;
        RequestContext context = RequestContext.getCurrentInstance();
        boolean loggedIn = false;

        try {
            if (selectedFornecedor.getFornecedorEnderecoList().size() == 1 && selectedFornecedor.getFornecedorEnderecoList().get(0).getIdFornecedor() == null) {
                selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());
            }
            if (selectedFornecedor.getFornecedorEnderecoTelefoneList().size() == 1 && selectedFornecedor.getFornecedorEnderecoTelefoneList().get(0).getIdFornecedor() == null) {
                selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
            }

            if (selectedFornecedor.getTipFornecedor().isEmpty()) {
                if (selectedFornecedor.getNumCpf().length() == 18) {
                    selectedFornecedor.setTipFornecedor("J");
                } else if (selectedFornecedor.getNumCpf().length() == 14) {
                    selectedFornecedor.setTipFornecedor("F");
                }

            }

            if (ValidaCampos("Inserir", "C")) {
                selectedFornecedor.setIdFornecedor(null);
                selectedFornecedor.setIdCategoria(categoria);

                FornecedorJpa.create(selectedFornecedor);
                loggedIn = true;
                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Fornecedor Inserido com Sucesso: ".concat(selectedFornecedor.getNomFornecedor())), selectedFornecedor.getNomFornecedor());
            }

        } catch (Exception e) {
            loggedIn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir Fornecedor: " + selectedFornecedor.getNomFornecedor(), "");

        } finally {
            if (loggedIn) {
                this.preparaInserir(actionEvent);
                //context.update("frmFornecedor:panel");
                //context.update("frmFornecedor:messages");
            }
            FacesContext.getCurrentInstance().addMessage(null, msg);
            context.addCallbackParam("loggedIn", loggedIn);
        }
    }

    public void alterar(ActionEvent actionEvent) {
        msg = null;
        try {
            if (categoria != null) {
                selectedFornecedor.setIdCategoria(categoria);
            }
            if (selectedFornecedor.getFornecedorEnderecoList().size() == 1 && selectedFornecedor.getFornecedorEnderecoList().get(0).getIdFornecedor() == null) {
                selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());
            }
            if (selectedFornecedor.getFornecedorEnderecoTelefoneList().size() == 1 && selectedFornecedor.getFornecedorEnderecoTelefoneList().get(0).getIdFornecedor() == null) {
                selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
            }

            if (selectedFornecedor.getTipFornecedor().isEmpty()) {
                if (selectedFornecedor.getNumCpf().length() == 18) {
                    selectedFornecedor.setTipFornecedor("J");
                } else if (selectedFornecedor.getNumCpf().length() == 14) {
                    selectedFornecedor.setTipFornecedor("F");
                }

            }

            if (ValidaCampos("Alterar", "C")) {
                FornecedorJpa.edit(selectedFornecedor);
                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Fornecedor Alterado com Sucesso: ".concat(selectedFornecedor.getNomFornecedor())), selectedFornecedor.getNomFornecedor());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: " + selectedFornecedor.getNomFornecedor(), "");
            lReturn = false;
        } finally {
            this.preparaInserir(actionEvent);
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluir(ActionEvent actionEvent) {
        msg = null;

        try {
            if (selectedFornecedor.getIdFornecedor() == 0) {
                msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ATENÇÃO ... Esse Fornecedor não pode ser Excluido: ".concat(selectedFornecedor.getNomFornecedor()).concat(" Fornecedor sendo Utilizado!"), "");
            } else {
                if (selectedFornecedor.getFornecedorEnderecoList().size() == 1 && selectedFornecedor.getFornecedorEnderecoList().get(0).getIdFornecedor() == null) {
                    selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());
                }
                if (selectedFornecedor.getFornecedorEnderecoTelefoneList().size() == 1 && selectedFornecedor.getFornecedorEnderecoTelefoneList().get(0).getIdFornecedor() == null) {
                    selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
                }

                FornecedorJpa.destroy(selectedFornecedor);

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, LoginBean.AtualizaLog("", "Fornecedor Excluido com Sucesso: ".concat(selectedFornecedor.getNomFornecedor())), selectedFornecedor.getNomFornecedor());
                lReturn = true;
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Excluir: ".concat(selectedFornecedor.getNomFornecedor()).concat(" Fornecedor sendo Utilizado!"), "");
            lReturn = false;
        } finally {
            if (lReturn) {
                selectedFornecedor = new Fornecedor();
                selectedFornecedor.setIdCategoria(new Categoria());
                selectedFornecedorEndereco = new FornecedorEndereco();
                selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
                selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
                selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
                selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);

                selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
                selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
                FornecedorTelefoneContatoList = new ArrayList<>();

                selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
                selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());
            }
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void inserirEndereco(ActionEvent actionEvent) {
        msg = null;
        boolean lPassa = false;
        int i = 0;
        try {
            selectedFornecedorEndereco.setIdFornecedor(selectedFornecedor);
            //selectedFornecedorEndereco.setCodLogradouro(cepEndereco);
            selectedFornecedorEndereco.setIdEndereco(null);
            if (ValidaCampos("Inserir", "E")) {
                if (selectedFornecedor.getFornecedorEnderecoList() == null) {
                    selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());
                    selectedFornecedor.getFornecedorEnderecoList().add(selectedFornecedorEndereco);
                } else {
                    for (i = 0; i < selectedFornecedor.getFornecedorEnderecoList().size(); i++) {
                        if (selectedFornecedor.getFornecedorEnderecoList().get(i).getDscEndereco().isEmpty()) {
                            lPassa = true;
                            break;
                        }
                    }
                    if (lPassa) {
                        selectedFornecedor.getFornecedorEnderecoList().set(i, selectedFornecedorEndereco);
                    } else {
                        selectedFornecedor.getFornecedorEnderecoList().add(selectedFornecedorEndereco);
                    }
                }
                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Endereço Inserido com Sucesso", selectedFornecedorEndereco.getDscEndereco());

                this.processoEndereco = "";
                this.preparaInserirEndereco(actionEvent);
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir Endereço: " + selectedFornecedorEndereco.getDscEndereco(), "");
        } finally {

            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void alterarEndereco(ActionEvent actionEvent) {
        msg = null;

        try {
            selectedFornecedorEndereco.setIdFornecedor(selectedFornecedor);
            if (cepEndereco != null) {
                selectedFornecedorEndereco.setCodLogradouro(cepEndereco);
            }
            if (ValidaCampos("Alterar", "E")) {
                selectedFornecedor.getFornecedorEnderecoList().set(rowid, selectedFornecedorEndereco);
                selectedFornecedorEndereco = new FornecedorEndereco();
                cepEndereco = null;
                this.processoEndereco = "";

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Endereço Alterado com Sucesso", selectedFornecedorEndereco.getDscEndereco());

                this.processoEndereco = "";
                this.preparaInserirEndereco(actionEvent);
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: " + selectedFornecedor.getNomFornecedor(), "");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluirEndereco(ActionEvent actionEvent) {
        msg = null;

        try {
            selectedFornecedor.getFornecedorEnderecoList().remove(selectedFornecedorEndereco);
            selectedFornecedorEndereco = new FornecedorEndereco();

            if (selectedFornecedor.getFornecedorEnderecoList().isEmpty()) {
                selectedFornecedor.getFornecedorEnderecoList().add(selectedFornecedorEndereco);
            }

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Endereço Excluido com Sucesso", selectedFornecedorEndereco.getDscEndereco());
            this.processoEndereco = "";
            this.preparaInserirEndereco(actionEvent);
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Excluir: " + selectedFornecedorEndereco.getDscEndereco(), "");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void inserirEnderecoTelefone(ActionEvent actionEvent) {
        msg = null;
        boolean lPassa = false;
        int i = 0;

        try {
            selectedFornecedorEnderecoTelefone.setIdTelefone(null);
            selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
            selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
            selectedFornecedorEnderecoTelefone.setIdDdd(ddd);

            if (ValidaCampos("Inserir", "T")) {
                if (selectedFornecedor.getFornecedorEnderecoTelefoneList() == null) {
                    selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
                    selectedFornecedor.getFornecedorEnderecoTelefoneList().add(selectedFornecedorEnderecoTelefone);
                } else {
                    for (i = 0; i < selectedFornecedor.getFornecedorEnderecoTelefoneList().size(); i++) {
                        if (selectedFornecedor.getFornecedorEnderecoTelefoneList().get(i).getDscTelefone().isEmpty()) {
                            lPassa = true;
                            break;
                        }
                    }
                    if (lPassa) {
                        selectedFornecedor.getFornecedorEnderecoTelefoneList().set(i, selectedFornecedorEnderecoTelefone);
                    } else {
                        selectedFornecedor.getFornecedorEnderecoTelefoneList().add(selectedFornecedorEnderecoTelefone);
                    }
                }

                selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
                selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
                ddi = new CodigoDdi();
                ddd = new CodigoDdd();
                departamento = new Departamento();
                this.ativacontato = false;
                this.processoTelefone = "";
                this.ativaAccordion = 1;

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Endereço Inserido com Sucesso", selectedFornecedorEnderecoTelefone.getDscTelefone());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir Telefone: " + selectedFornecedorEnderecoTelefone.getDscTelefone(), "");
        } finally {

            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void alterarEnderecoTelefone(ActionEvent actionEvent) {
        msg = null;

        try {
            selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
            if (ddi != null) {
                selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
            }
            if (ddd != null) {
                selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
            }
            if (ValidaCampos("Alterar", "T")) {
                selectedFornecedor.getFornecedorEnderecoTelefoneList().set(rowidtelefone, selectedFornecedorEnderecoTelefone);

                ddi = new CodigoDdi();
                ddd = new CodigoDdd();
                departamento = new Departamento();
                this.ativacontato = true;
                selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
                selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
                selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
                selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
                selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
                selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
                this.processoTelefone = "";

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Telefone Alterado com Sucesso", selectedFornecedorEnderecoTelefone.getDscTelefone());
            }

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: " + selectedFornecedorEnderecoTelefone.getDscTelefone(),
                    "");
        } finally {

            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluirEnderecoTelefone(ActionEvent actionEvent) {
        msg = null;

        try {
            selectedFornecedor.getFornecedorEnderecoTelefoneList().remove(selectedFornecedorEnderecoTelefone);
            selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
            selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
            selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
            selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            FornecedorTelefoneContatoList = new ArrayList<>();
            FornecedorTelefoneContatoList.add(selectedFornecedorTelefoneContato);

            if (selectedFornecedor.getFornecedorEnderecoTelefoneList().isEmpty()) {
                selectedFornecedor.getFornecedorEnderecoTelefoneList().add(selectedFornecedorEnderecoTelefone);
            }

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Telefone Excluido com Sucesso", selectedFornecedorEnderecoTelefone.getDscTelefone());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Excluir: " + selectedFornecedorEnderecoTelefone.getDscTelefone(), "");
        } finally {
            this.ativaAccordion = -1;
            this.ativacontato = true;
            this.ativatelefone = true;
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void inserirTelefoneContato(ActionEvent actionEvent) {
        msg = null;
        boolean lPassa = false;
        int i = 0;

        try {
            selectedFornecedorTelefoneContato.setIdContato(null);
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            selectedFornecedorTelefoneContato.setIdTelefone(selectedFornecedorEnderecoTelefone);

            if (ValidaCampos("Inserir", "O")) {
                if (selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList() == null) {
                    selectedFornecedorEnderecoTelefone.setFornecedorTelefoneContatoList(new ArrayList<FornecedorTelefoneContato>());
                    selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().add(selectedFornecedorTelefoneContato);
                } else {
                    for (i = 0; i < selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().size(); i++) {
                        if (selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().get(i).getNomContato().isEmpty()) {
                            lPassa = true;
                            break;
                        }
                    }
                    if (lPassa) {
                        selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().set(i, selectedFornecedorTelefoneContato);
                    } else {
                        selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().add(selectedFornecedorTelefoneContato);
                    }
                }
                this.FornecedorTelefoneContatoList = selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList();
                selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
                selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
                departamento = null;
                this.processoContato = "";

                msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Contato Inserido com Sucesso", selectedFornecedorTelefoneContato.getNomContato());
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Inserir Contato: " + selectedFornecedorTelefoneContato.getNomContato(), "");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void alterarTelefoneContato(ActionEvent actionEvent) {
        msg = null;

        try {
            selectedFornecedorTelefoneContato.setIdTelefone(selectedFornecedorEnderecoTelefone);
            if (departamento != null) {
                selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            }
            if (ValidaCampos("Inserir", "O")) {
                selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().set(rowidtelefonecontato, selectedFornecedorTelefoneContato);
            }

            departamento = null;
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            this.processoContato = "";

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Contato Alterado com Sucesso", selectedFornecedorTelefoneContato.getNomContato());

        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Alterar: " + selectedFornecedorTelefoneContato.getNomContato(), "");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public void excluirTelefoneContato(ActionEvent actionEvent) {
        msg = null;

        try {
            selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().remove(selectedFornecedorTelefoneContato);
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);

            if (selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().isEmpty()) {
                selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().add(null);
            }

            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Contato Excluido com Sucesso", selectedFornecedorTelefoneContato.getNomContato());
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Excluir: " + selectedFornecedorTelefoneContato.getNomContato(), "");
        } finally {
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public String getMascaraCpf() {
        if (mascaraCpf == null) {
            handleCpf();
        } else if (selectedFornecedor.getNumCpf() != null) {
            handleCpf();
        }
        return mascaraCpf;
    }

    public void setMascaraCpf(String mascaraCpf) {
        this.mascaraCpf = mascaraCpf;
    }

    public void handleCpf() {
        if (selectedFornecedor.getNumCpf() == null) {
            if (selectedFornecedor.getTipFornecedor() == null) {
                this.mascaraCpf = "##.###.###/####-##";
            } else {
                if (selectedFornecedor.getTipFornecedor().equals("F")) {
                    this.mascaraCpf = "###.###.###-##";
                } else {
                    this.mascaraCpf = "##.###.###/####-##";
                }
            }
        } else {
            if (selectedFornecedor.getTipFornecedor().equals("F")) {
                this.mascaraCpf = "###.###.###-##";
            } else {
                this.mascaraCpf = "##.###.###/####-##";
            }
        }
    }

    private SelectItem[] createFilterOptions(String[][] tipFornecedors) {
        SelectItem[] options = new SelectItem[3];

        options[0] = new SelectItem("", "Selecione");
        for (int i = 0; i < 2; i++) {
            options[i + 1] = new SelectItem(tipFornecedors[0][i], tipFornecedors[1][i]);
        }

        return options;
    }

    private SelectItem[] createFilterOptionsEndereco(String[][] tipEnderecos) {
        SelectItem[] options = new SelectItem[6];

        options[0] = new SelectItem("", "Selecione");
        for (int i = 0; i < 5; i++) {
            options[i + 1] = new SelectItem(tipEnderecos[0][i], tipEnderecos[1][i]);
        }

        return options;
    }

    public String[][] getTipFornecedor() {
        return tipFornecedor;
    }

    public void setTipFornecedor(String[][] tipFornecedor) {
        this.tipFornecedor = tipFornecedor;
    }

    public SelectItem[] getTipFornecedorOptions() {
        return tipFornecedorOptions;
    }

    public void setTipFornecedorOptions(SelectItem[] tipFornecedorOptions) {
        this.tipFornecedorOptions = tipFornecedorOptions;
    }

    public LazyDataModel<FornecedorEndereco> getLazyModelEndereco() {
        return lazyModelEndereco;
    }

    public void setLazyModelEndereco(LazyDataModel<FornecedorEndereco> lazyModelEndereco) {
        this.lazyModelEndereco = lazyModelEndereco;
    }

    public FornecedorEndereco getSelectedFornecedorEndereco() {
        /*
         FacesContext facesContext = FacesContext.getCurrentInstance();
         Map<String, String> map = facesContext.getExternalContext().getRequestParameterMap();

         String cKey = map.get("javax.faces.source");
         if (cKey.indexOf("selectButtonFornecedorEndereco") >= 0) {
         this.incluirendereco = false;
         this.alterarendereco = true;
         } else if (cKey.indexOf("incluirButtonFornecedorEndereco") >= 0) {
         this.incluirendereco = true;
         this.alterarendereco = false;
         } else {
         this.incluirendereco = false;
         this.alterarendereco = false;
         }
         */
        if (selectedFornecedorEndereco == null) {
            selectedFornecedorEndereco = new FornecedorEndereco();
        }

        return selectedFornecedorEndereco;
    }

    public void setSelectedFornecedorEndereco(FornecedorEndereco selectedFornecedorEndereco) {
        this.processoEndereco = "ALTERAÇÃO";
        this.selectedFornecedorEndereco = selectedFornecedorEndereco;
    }

    public String[][] getTipEndereco() {
        return tipEndereco;
    }

    public void setTipEndereco(String[][] tipEndereco) {
        this.tipEndereco = tipEndereco;
    }

    public SelectItem[] getTipEnderecoOptions() {
        return tipEnderecoOptions;
    }

    public void setTipEnderecoOptions(SelectItem[] tipEnderecoOptions) {
        this.tipEnderecoOptions = tipEnderecoOptions;
    }

    public FornecedorEndereco limparEndereco() {
        selectedFornecedorEndereco = new FornecedorEndereco();
        return selectedFornecedorEndereco;
    }

    public LazyDataModel<FornecedorEnderecoTelefone> getLazyModelEnderecoTelefone() {
        return lazyModelEnderecoTelefone;
    }

    public void setLazyModelEnderecoTelefone(LazyDataModel<FornecedorEnderecoTelefone> lazyModelEnderecoTelefone) {
        this.lazyModelEnderecoTelefone = lazyModelEnderecoTelefone;
    }

    public FornecedorEnderecoTelefone getSelectedFornecedorEnderecoTelefone() {
        return selectedFornecedorEnderecoTelefone;
    }

    public void setSelectedFornecedorEnderecoTelefone(FornecedorEnderecoTelefone selectedFornecedorEnderecoTelefone) {
        try {
            this.processoTelefone = "ALTERAÇÃO";
            selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
            selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
            FornecedorTelefoneContatoList = new ArrayList<>();

            if (selectedFornecedorEnderecoTelefone == null) {
                FornecedorTelefoneContatoList.add(selectedFornecedorTelefoneContato);

                selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
                selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
                selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
                selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
                selectedFornecedorEnderecoTelefone.setFornecedorTelefoneContatoList(FornecedorTelefoneContatoList);

                selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
                selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
            } else {
                if (selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList().isEmpty()) {
                    FornecedorTelefoneContatoList.add(selectedFornecedorTelefoneContato);
                } else {
                    FornecedorTelefoneContatoList = selectedFornecedorEnderecoTelefone.getFornecedorTelefoneContatoList();
                }
            }
        } catch (Exception e) {
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Carregar o Telefone", "");
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }

        this.selectedFornecedorEnderecoTelefone = selectedFornecedorEnderecoTelefone;
    }

    private SelectItem[] createFilterOptionsEnderecoTelefone(String[][] tipEnderecoTelefone) {
        SelectItem[] options = new SelectItem[5];

        options[0] = new SelectItem("", "Selecione");
        for (int i = 0; i < 4; i++) {
            options[i + 1] = new SelectItem(tipEnderecoTelefone[0][i], tipEnderecoTelefone[1][i]);
        }

        return options;
    }

    public String[][] getTipEnderecoTelefone() {
        return tipEnderecoTelefone;
    }

    public void setTipEnderecoTelefone(String[][] tipEnderecoTelefone) {
        this.tipEnderecoTelefone = tipEnderecoTelefone;
    }

    public SelectItem[] getTipEnderecoTelefoneOptions() {
        return tipEnderecoTelefoneOptions;
    }

    public void setTipEnderecoTelefoneOptions(SelectItem[] tipEnderecoTelefoneOptions) {
        this.tipEnderecoTelefoneOptions = tipEnderecoTelefoneOptions;
    }

    public FornecedorEnderecoTelefone limparEnderecoTelefone() {
        selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
        selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
        selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
        selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
        return selectedFornecedorEnderecoTelefone;
    }

    public FornecedorEnderecoTelefone abreEnderecoTelefone() {
        if (selectedFornecedorEndereco.getIdEndereco() == null) {
            selectedFornecedorEndereco.setIdEndereco(0);
        }
        /*
         pesquisas.clear();
         pesquisas.put("idEndereco", selectedFornecedorEndereco.getIdEndereco().toString());
        
         lazyModelEnderecoTelefone.load(0, 3, null, true, pesquisas);
         * 
         */

        return selectedFornecedorEnderecoTelefone;
    }

    public boolean verificaCampo(FacesContext context, UIComponent input, Object value) throws ValidatorException {
        try {
            String cCampo = (String) value;
            if (cCampo.isEmpty()) {
                throw new ValidatorException(new FacesMessage("Campo Obrigatório"));
            }
        } catch (Exception e) {
            throw new ValidatorException(new FacesMessage("Campo Obrigatório"));
        }

        return true;
    }

    public boolean ValidaCampos(String cOperacao, String cModulo) {
        lReturn = true;
        msg = null;
        String[] aCaractere = {".", "/", "-"};
        String[] aTipFornecedor = {"J", "F"};
        String[] aTipEndereco = {"1", "2", "3"};
        String[] aTipTelefone = {"1", "2", "3", "4"};

        String cCpf;
        try {
            switch (cModulo) {
                case "C":
                    if (!funcoes.PesqCaracteres(selectedFornecedor.getTipFornecedor(), aTipFornecedor)) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "Tipo do Fornecedor não selecionado!");
                        lReturn = false;
                    } else if (selectedFornecedor.getNomFornecedor().isEmpty()) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "Razão Social // Nome do Fornecedor em branco!");
                        lReturn = false;
                    }
                    if (lReturn) {
                        cCpf = funcoes.TiraCaractere(selectedFornecedor.getNumCpf(), aCaractere);
                        lReturn = funcoes.valida_CpfCnpj(cCpf);
                        if (lReturn) {
                            selectedFornecedor.setNumCpf(cCpf);
                        } else {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "C.N.P.J. ou C.P.F. Inválido!");
                            lReturn = false;
                        }
                    }
                    if (lReturn) {
                        if (!funcoes.isValidDate(selectedFornecedor.getDatNascAbert(), true, false)) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "Data Abertura // Nascimento Inválida!");
                            lReturn = false;
                        }
                    }
                    if (lReturn) {
                        if (selectedFornecedor.getIdCategoria() == null || selectedFornecedor.getIdCategoria().getDscCategoria().isEmpty()) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "Categoria Obrigatória!");
                            lReturn = false;
                        }
                    }
                    break;
                case "E":
                    if (!funcoes.PesqCaracteres(selectedFornecedorEndereco.getTipEndereco(), aTipEndereco)) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedorEndereco.getDscEndereco(), "Tipo do Endereço não selecionado!");
                        lReturn = false;
                    }
                    if (lReturn) {
                        if (selectedFornecedorEndereco.getDscEndereco().isEmpty()) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "Descrição do Endereço em branco!");
                            lReturn = false;
                        }
                    }
                    if (lReturn) {
                        if (selectedFornecedorEndereco.getCodLogradouro() == null) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedorEndereco.getDscEndereco(), "C.E.P. inválido!");
                            lReturn = false;
                        } else if (selectedFornecedorEndereco.getCodLogradouro().getNumCep().isEmpty()) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedorEndereco.getDscEndereco(), "C.E.P. inválido!");
                            lReturn = false;
                        }
                    }
                    if (lReturn) {
                        if (selectedFornecedorEndereco.getNumEndereco().isEmpty()) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedorEndereco.getDscEndereco(), "Numero em branco!");
                            lReturn = false;
                        }
                    }
                    break;
                case "T":
                    if (!funcoes.PesqCaracteres(selectedFornecedorEnderecoTelefone.getTipTelefone(), aTipTelefone)) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                + selectedFornecedorEnderecoTelefone.getDscTelefone(), "Tipo do Telefone não selecionado!");
                        lReturn = false;
                    }
                    if (lReturn) {
                        if (selectedFornecedorEnderecoTelefone.getDscTelefone().isEmpty()) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                    + selectedFornecedorEnderecoTelefone.getDscTelefone(), "Descrição do Telefone em branco!");
                            lReturn = false;
                        }
                    }
                    if (lReturn) {
                        if (selectedFornecedorEnderecoTelefone.getIdDdi() == null) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                    + selectedFornecedorEnderecoTelefone.getDscTelefone(), "D.D.I. Incorreto!");
                            lReturn = false;
                        }

                    }
                    if (lReturn) {
                        if (selectedFornecedorEnderecoTelefone.getIdDdd() == null) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                    + selectedFornecedorEnderecoTelefone.getDscTelefone(), "D.D.D. Incorreto!");
                            lReturn = false;
                        }

                    }
                    if (lReturn) {
                        if (selectedFornecedorEnderecoTelefone.getNumTelefone().isEmpty()) {
                            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                    + selectedFornecedorEnderecoTelefone.getDscTelefone(), "Numero do Telefone em branco!");
                            lReturn = false;
                        }
                    }
                    break;
                case "O":
                    if (selectedFornecedorTelefoneContato.getNomContato().isEmpty()) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                + selectedFornecedorTelefoneContato.getNomContato(), "Nome do Contato em branco!");
                        lReturn = false;
                    } else if (!funcoes.validaEmail(selectedFornecedorTelefoneContato.getEmailContato())) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                + selectedFornecedorTelefoneContato.getNomContato(), "E-Mail Incorreto ou em branco!");
                        lReturn = false;
                    } else if (departamento == null || departamento.getIdDepartamento() == null) {
                        msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": "
                                + selectedFornecedorTelefoneContato.getNomContato(), "Departamento em branco!");
                        lReturn = false;
                    }
                    break;
            }
        } catch (Exception ex) {
            lReturn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao " + cOperacao + ": " + selectedFornecedor.getNomFornecedor(), "");
        }
        return lReturn;
    }

    public void preparaInserir(ActionEvent actionEvent) {
        selectedFornecedorEndereco = new FornecedorEndereco();
        selectedFornecedorEndereco.setCodLogradouro(cepEnderecoTemp);
        selectedFornecedor = new Fornecedor();
        selectedFornecedor.setIdCategoria(new Categoria());

        selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
        selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
        selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
        selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
        selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
        selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
        FornecedorTelefoneContatoList = new ArrayList<>();
        FornecedorTelefoneContatoList.add(selectedFornecedorTelefoneContato);
        selectedFornecedorEnderecoTelefone.setFornecedorTelefoneContatoList(FornecedorTelefoneContatoList);

        selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
        selectedFornecedor.getFornecedorEnderecoTelefoneList().add(selectedFornecedorEnderecoTelefone);

        selectedFornecedor.setFornecedorEnderecoList(new ArrayList<FornecedorEndereco>());
        selectedFornecedor.getFornecedorEnderecoList().add(selectedFornecedorEndereco);

        selectedFornecedor.setFornecedorEnderecoTelefoneList(new ArrayList<FornecedorEnderecoTelefone>());
        selectedFornecedor.getFornecedorEnderecoTelefoneList().add(selectedFornecedorEnderecoTelefone);
        this.ativacontato = true;
        this.ativatelefone = true;
        this.ativaAccordion = -1;
        this.ativaTab = 0;
        this.processo = "INCLUSÃO";
        this.processoEndereco = "";
        this.incluirfornecedor = true;
        this.alterarfornecedor = false;
    }

    public void preparaInserirEndereco(ActionEvent actionEvent) {
        this.processoEndereco = "INCLUSÃO";
        this.alterarendereco = false;
        this.incluirendereco = true;
        selectedFornecedorEndereco = new FornecedorEndereco();
        selectedFornecedorEndereco.setCodLogradouro(cepEnderecoTemp);
        selectedFornecedorEndereco.setTipEndereco("");
    }

    public void preparaInserirEnderecoTelefone(ActionEvent actionEvent) throws EaoException {
        this.ativacontato = true;
        this.ativatelefone = false;
        this.ativaAccordion = 0;
        this.processoTelefone = "INCLUSÃO";

        ddi = codigoDdiJpa.getPorId(31);
        ddd = codigoDddJpa.getPorId(11958);

        this.selectedFornecedorEnderecoTelefone = new FornecedorEnderecoTelefone();
        selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
        selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
        selectedFornecedorEnderecoTelefone.setIdFornecedor(selectedFornecedor);
        this.selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
        this.selectedFornecedorEnderecoTelefone.setIdDdd(ddd);

        this.selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
        selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
        this.FornecedorTelefoneContatoList = new ArrayList<>();
        this.FornecedorTelefoneContatoList.add(selectedFornecedorTelefoneContato);
    }

    public void preparaInserirTelefoneContato(ActionEvent actionEvent) {
        this.processoContato = "INCLUSÃO";
        selectedFornecedorTelefoneContato = new FornecedorTelefoneContato();
        selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        selectedFornecedor.setIdCategoria(categoria);
        this.categoria = categoria;
    }

    public boolean isIncluirfornecedor() {
        return incluirfornecedor;
    }

    public void setIncluirfornecedor(boolean incluirfornecedor) {
        this.incluirfornecedor = incluirfornecedor;
    }

    public boolean isAlterarfornecedor() {
        return alterarfornecedor;
    }

    public void setAlterarfornecedor(boolean alterarfornecedor) {
        this.alterarfornecedor = alterarfornecedor;
    }

    public boolean isIncluirendereco() {
        return incluirendereco;
    }

    public void setIncluirendereco(boolean incluirendereco) {
        this.incluirendereco = incluirendereco;
    }

    public boolean isAlterarendereco() {
        return alterarendereco;
    }

    public void setAlterarendereco(boolean alterarendereco) {
        this.alterarendereco = alterarendereco;
    }

    public Integer getRowid() {
        return rowid;
    }

    public void setRowid(Integer rowid) {
        this.rowid = rowid;
    }

    public CepEndereco getCepEndereco() {
        return cepEndereco;
    }

    public void setCepEndereco(CepEndereco cepEndereco) {
        selectedFornecedorEndereco.setCodLogradouro(cepEndereco);
        this.cepEndereco = cepEndereco;
    }

    public CodigoDdi getDdi() {
        return ddi;
    }

    public void setDdi(CodigoDdi ddi) {
        selectedFornecedorEnderecoTelefone.setIdDdi(ddi);
        this.ddi = ddi;
    }

    public CodigoDdd getDdd() {
        return ddd;
    }

    public void setDdd(CodigoDdd ddd) {
        selectedFornecedorEnderecoTelefone.setIdDdd(ddd);
        this.ddd = ddd;
    }

    public Departamento getDepartamento() {
        return departamento;
    }

    public void setDepartamento(Departamento departamento) {
        selectedFornecedorTelefoneContato.setIdDepartamento(departamento);
        this.departamento = departamento;
    }

    public Integer getRowidtelefone() {
        return rowidtelefone;
    }

    public void setRowidtelefone(Integer rowidtelefone) {
        this.rowidtelefone = rowidtelefone;
    }

    public Integer getRowidtelefonecontato() {
        return rowidtelefonecontato;
    }

    public void setRowidtelefonecontato(Integer rowidtelefonecontato) {
        this.rowidtelefonecontato = rowidtelefonecontato;
    }

    public FornecedorTelefoneContato getSelectedFornecedorTelefoneContato() {
        return selectedFornecedorTelefoneContato;
    }

    public void setSelectedFornecedorTelefoneContato(FornecedorTelefoneContato selectedFornecedorTelefoneContato) {
        this.processoContato = "ALTERAÇÃO";
        this.selectedFornecedorTelefoneContato = selectedFornecedorTelefoneContato;
    }

    public List<FornecedorTelefoneContato> getFornecedorTelefoneContatoList() {
        return FornecedorTelefoneContatoList;
    }

    public void setFornecedorTelefoneContatoList(List<FornecedorTelefoneContato> FornecedorTelefoneContatoList) {
        this.FornecedorTelefoneContatoList = FornecedorTelefoneContatoList;
    }

    public boolean isAtivacontato() {
        return ativacontato;
    }

    public void setAtivacontato(boolean ativacontato) {
        this.ativacontato = ativacontato;
    }

    public Integer getAtivaTab() {
        return ativaTab;
    }

    public void setAtivaTab(Integer ativaTab) {
        this.ativaTab = ativaTab;
    }

    public Integer getAtivaAccordion() {
        return ativaAccordion;
    }

    public void setAtivaAccordion(Integer ativaAccordion) {
        this.ativaAccordion = ativaAccordion;
    }

    public String getProcesso() {
        return processo;
    }

    public void setProcesso(String processo) {
        this.processo = processo;
    }

    public String getProcessoEndereco() {
        return processoEndereco;
    }

    public void setProcessoEndereco(String processoEndereco) {
        this.processoEndereco = processoEndereco;
    }

    public String getProcessoTelefone() {
        return processoTelefone;
    }

    public void setProcessoTelefone(String processoTelefone) {
        this.processoTelefone = processoTelefone;
    }

    public String getProcessoContato() {
        return processoContato;
    }

    public void setProcessoContato(String processoContato) {
        this.processoContato = processoContato;
    }

    public boolean isAtivatelefone() {
        return ativatelefone;
    }

    public void setAtivatelefone(boolean ativatelefone) {
        this.ativatelefone = ativatelefone;
    }
}
